777853
@@ -175,12 +175,17 @@
public static ZipExtraField createExtraField(final ZipShort headerId)
             }
             try {
                 final ZipExtraField ze = createExtraField(headerId);
+                try {
                 if (local) {
                     ze.parseFromLocalFileData(data, start + WORD, length);
                 } else {
                     ze.parseFromCentralDirectoryData(data, start + WORD,
                                                      length);
                 }
+                } catch (ArrayIndexOutOfBoundsException aiobe) {
+                    throw (ZipException) new ZipException("Failed to parse corrupt ZIP extra field of type "
+                        + Integer.toHexString(headerId.getValue())).initCause(aiobe);
+                }
                 v.add(ze);
             } catch (final InstantiationException | IllegalAccessException ie) {
                 throw (ZipException) new ZipException(ie.getMessage()).initCause(ie);
